#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
LL y,z,p;
map<LL,LL>tab;
LL qpow(LL a,LL b,LL MOD)
{
	LL ans=1;
	for(;b;b>>=1,a=a*a%MOD)
		if(b&1)ans=ans*a%MOD;
	return ans;
}
void BSGS(LL y,LL z,LL p)
{
	y%=p;z%=p;
	tab.clear();
	LL m=ceil(sqrt(p));
	if(!y)
	{
		if(!z)printf("1\n");
		else printf("Impossible!\n");
		return;
	}
	else
	{
		if(z==1)
		{
			printf("0\n");
			return;
		}
	}
	LL k=z%p,temp=qpow(y,m,p);
	tab[z]=m;
	for(LL j=1;j<m;++j)
	{
		k=k*y%p;
		if(!tab[k])tab[k]=j;
	}
	k=1;
	for(LL i=1;i<=m+1;++i)
	{
		k=k*temp%p;
		if(tab[k])
		{
			printf("%lld\n",i*m-(tab[k]%m));
			return;
		}
	}
	printf("Impossible!\n");
	return;
}
int main()
{
	scanf("%lld%lld%lld",&y,&z,&p);
	BSGS(y,z,p);
	return 0;
}
